// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported WorkspacesView, WorkspacesDisplay */
-const { Clutter, Gio, GObject, Meta, Shell, St } = imports.gi;
+const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Main = imports.ui.main;
const WindowManager = imports.ui.windowManager;
this._restackedNotifyId = 0;
this._scrollEventId = 0;
this._keyPressEventId = 0;
+ this._scrollTimeoutId = 0;
this._fullGeometry = null;
this._scrolling = false; // swipe-scrolling
this._gestureActive = false; // touch(pad) gestures
+ this._canScroll = true; // limiting scrolling speed
this.connect('destroy', this._onDestroy.bind(this));
}
this._parentSetLater = 0;
}
+ if (this._scrollTimeoutId !== 0) {
+ GLib.source_remove(this._scrollTimeoutId);
+ this._scrollTimeoutId = 0;
+ }
+
global.window_manager.disconnect(this._switchWorkspaceId);
global.workspace_manager.disconnect(this._reorderWorkspacesdId);
}
this._getMonitorIndexForEvent(event) != this._primaryIndex)
return Clutter.EVENT_PROPAGATE;
+ if (!this._canScroll)
+ return Clutter.EVENT_PROPAGATE;
+
let workspaceManager = global.workspace_manager;
let activeWs = workspaceManager.get_active_workspace();
let ws;
return Clutter.EVENT_PROPAGATE;
}
Main.wm.actionMoveWorkspace(ws);
+
+ this._canScroll = false;
+ this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
+ WORKSPACE_SWITCH_TIME, () => {
+ this._canScroll = true;
+ this._scrollTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ }
+ );
+
return Clutter.EVENT_STOP;
}